package cn.clouds234.poi;

import cn.clouds234.poi.entity.AccountDto;


import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

/**
 * @author wyf
 * @date 2025/2/6 16:23
 */
public class ExcelClient {
    private static final String filePath = "";

    public static void main(String[] args) throws Exception {
//        exportFile();
        importFile();
    }

    public static List<AccountDto> getData(){
        ArrayList<AccountDto> accountDtos = new ArrayList<>();
        for (int i = 0; i < 9; i++) {
            AccountDto accountDto = new AccountDto("tom" + i, 10 + i, 100.50, new Date(), LocalDate.now(), "m");
            accountDtos.add(accountDto);
        }

        return accountDtos;
    }

    /**
     * 导入Excel表格。解析成list列表。
     * 需要校验字段的格式。
     * 需要适配多种不同实体类型。
     * @author wyf
     * @date 2025/2/6 16:23
     */
    public static void importFile() throws Exception {
        ExcelUtil<AccountDto> util = new ExcelUtil<>(AccountDto.class);
        List<AccountDto> accountDtos = util.excelToList(new FileInputStream("F:\\data\\accoutn2.xlsx"),null, 1);
        for (AccountDto accountDto : accountDtos) {
            System.out.println(accountDto);
        }
    }

    /**
     * 将list导出成Excel文件。
     * 可以导出只包含表头的文件。
     * 需要兼容到特殊符号的字段值。
     * 给出每行对应的实体类和数据列表。
     * 生成Excel文件流。
     * @author wyf
     * @date 2025/2/6 16:25
     */
    public static void exportFile() throws FileNotFoundException {
        ExcelUtil<AccountDto> util = new ExcelUtil<>(AccountDto.class);
        util.exportExcel(new FileOutputStream("F:\\data\\accoutn2.xlsx"),getData(),"账号", 1);

    }
}
